<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>40 浅拷贝</title>
	</head>
	<body>
		<script type="text/javascript">	
		// 基本数据类型:按值传递
		var a = 1;
		var b = a;
		b = 200;
		console.log(b);
		console.log(a);
		// 引用数据类型:按引用地址传递
		var arr = [1,3,4];
		var newArr = arr;
		newArr.push(10);
		console.log(newArr);
		console.log(arr);
		// 拷贝: 浅拷贝 和 深拷贝
		// 操作拷贝之后的对象的某个属性不会影响原始对象中的属性,这种拷贝就称为叫深拷贝
		// 反之,有影响叫浅拷贝
		var obj = {
			name:'小马哥',
			age: 20,
			hobby:'eat',
			friend:{
				name:'alex',
				age:38
			}
		}
		function shadowCopy(toObj,fromObj){
			for(var key in fromObj){
				toObj[key] = fromObj[key];
			}
			// 来实现浅拷贝
			return toObj;
		}
		// 浅拷贝不是直接赋值,浅拷贝新建了一个对象,将原来对象的属性都一一的复制过来,复制的是值,而不是引用.浅拷贝的复制只复制了第一层的属性,并没有递归所有的值复制归来
		var newObj = shadowCopy({},obj);
		newObj.age = 30;
		newObj.friend.name = '阿黄';
		
		</script>
	</body>
</html>
